/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package nl.hr.cmi.android.aanwezigheidsregistratie.helper;

import android.util.Log;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

/**
 *
 * @author Johan
 */
public class WebserviceHelper {

    public static final String GET_DOCENTEN = "getDocenten";
    public static final String GET_KLASSEN = "getKlassen";
    public static final String GET_STUDENTEN = "getStudenten";
    private static final String SOAP_ACTION = "aanwezigheidService";
    private static final String NAMESPACE = "http://www.johankom.nl/aanwezigheidService/";
    private static final String URL = "http://www.johankom.nl/soap/server1.php";
    private static String METHOD_NAME = "getDocenten";
    private List<String> lijst = new ArrayList<String>();

    public List<String> callWebservice(String method) {
        return callWebservice(method, null);
    }

    public List<String> callWebservice(String method, HashMap<String, Object> properties) {
        METHOD_NAME = method;
        // Start webservice
        try {
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
            // Alleen als je een methode met properties gaat aanroepen.
            //
            if (properties != null) {
                //request.addProperty("klas", "INF1V");
                for (String key : properties.keySet()) {
                    request.addProperty(key, properties.get(key));
                }
            }
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.setOutputSoapObject(request);
            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
            androidHttpTransport.call(SOAP_ACTION, envelope);

            // Resultaat van de webservice
            SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
            Log.e("Inhoud van results", resultsRequestSOAP.toString());

            // Resultaat toevoegen aan een lijst. (In dit geval niet geheel relevant omdat PHP een String teruggeeft.
            // Als je bij Java een List<String> terug geeft is dit wel mooi.
            for (int i = 0; i < resultsRequestSOAP.getPropertyCount(); i++) {
                lijst.add(resultsRequestSOAP.getProperty(i).toString());
            }
        } catch (Exception ex) {
            Log.e("WebserviceError", ex.getMessage());
        }
        return lijst;
    }
}
